package edu.hdu.hangzhe.utils;

import java.util.HashMap;

public class ASMUtils {

    private static final HashMap<Integer, String> n2i;
    private static final HashMap<String, Integer> i2n;

    public static String num2Ins(int insNum) {
        return n2i.get(insNum);
    }
    public static Integer ins2Num(String ins) {
        return i2n.get(ins);
    }
    static {
        n2i = new HashMap<>();
        i2n = new HashMap<>();
        i2n.put("NOP", 0 );
        i2n.put("ACONST_NULL", 1);
        i2n.put("ICONST_M1", 2);
        i2n.put("ICONST_0", 3);
        i2n.put("ICONST_1", 4);
        i2n.put("ICONST_2", 5);
        i2n.put("ICONST_3", 6);
        i2n.put("ICONST_4", 7);
        i2n.put("ICONST_5", 8);
        i2n.put("LCONST_0", 9);
        i2n.put("LCONST_1", 10);
        i2n.put("FCONST_0", 11);
        i2n.put("FCONST_1", 12);
        i2n.put("FCONST_2", 13);
        i2n.put("DCONST_0", 14);
        i2n.put("DCONST_1", 15);
        i2n.put("BIPUSH", 16);
        i2n.put("SIPUSH", 17);
        i2n.put("LDC", 18);
        i2n.put("ILOAD", 21);
        i2n.put("LLOAD", 22);
        i2n.put("FLOAD", 23);
        i2n.put("DLOAD", 24);
        i2n.put("ALOAD", 25);
        i2n.put("IALOAD", 46);
        i2n.put("LALOAD", 47);
        i2n.put("FALOAD", 48);
        i2n.put("DALOAD", 49);
        i2n.put("AALOAD", 50);
        i2n.put("BALOAD", 51);
        i2n.put("CALOAD", 52);
        i2n.put("SALOAD", 53);
        i2n.put("ISTORE", 54);
        i2n.put("LSTORE", 55);
        i2n.put("FSTORE", 56);
        i2n.put("DSTORE", 57);
        i2n.put("ASTORE", 58);
        i2n.put("IASTORE", 79);
        i2n.put("LASTORE", 80);
        i2n.put("FASTORE", 81);
        i2n.put("DASTORE", 82);
        i2n.put("AASTORE", 83);
        i2n.put("BASTORE", 84);
        i2n.put("CASTORE", 85);
        i2n.put("SASTORE", 86);
        i2n.put("POP", 87);
        i2n.put("POP2", 88);
        i2n.put("DUP", 89);
        i2n.put("DUP_X1", 90);
        i2n.put("DUP_X2", 91);
        i2n.put("DUP2", 92);
        i2n.put("DUP2_X1", 93);
        i2n.put("DUP2_X2", 94);
        i2n.put("SWAP", 95);
        i2n.put("IADD", 96);
        i2n.put("LADD", 97);
        i2n.put("FADD", 98);
        i2n.put("DADD", 99);
        i2n.put("ISUB", 100);
        i2n.put("LSUB", 101);
        i2n.put("FSUB", 102);
        i2n.put("DSUB", 103);
        i2n.put("IMUL", 104);
        i2n.put("LMUL", 105);
        i2n.put("FMUL", 106);
        i2n.put("DMUL", 107);
        i2n.put("IDIV", 108);
        i2n.put("LDIV", 109);
        i2n.put("FDIV", 110);
        i2n.put("DDIV", 111);
        i2n.put("IREM", 112);
        i2n.put("LREM", 113);
        i2n.put("FREM", 114);
        i2n.put("DREM", 115);
        i2n.put("INEG", 116);
        i2n.put("LNEG", 117);
        i2n.put("FNEG", 118);
        i2n.put("DNEG", 119);
        i2n.put("ISHL", 120);
        i2n.put("LSHL", 121);
        i2n.put("ISHR", 122);
        i2n.put("LSHR", 123);
        i2n.put("IUSHR", 124);
        i2n.put("LUSHR", 125);
        i2n.put("IAND", 126);
        i2n.put("LAND", 127);
        i2n.put("IOR", 128);
        i2n.put("LOR", 129);
        i2n.put("IXOR", 130);
        i2n.put("LXOR", 131);
        i2n.put("IINC", 132);
        i2n.put("I2L", 133);
        i2n.put("I2F", 134);
        i2n.put("I2D", 135);
        i2n.put("L2I", 136);
        i2n.put("L2F", 137);
        i2n.put("L2D", 138);
        i2n.put("F2I", 139);
        i2n.put("F2L", 140);
        i2n.put("F2D", 141);
        i2n.put("D2I", 142);
        i2n.put("D2L", 143);
        i2n.put("D2F", 144);
        i2n.put("I2B", 145);
        i2n.put("I2C", 146);
        i2n.put("I2S", 147);
        i2n.put("LCMP", 148);
        i2n.put("FCMPL", 149);
        i2n.put("FCMPG", 150);
        i2n.put("DCMPL", 151);
        i2n.put("DCMPG", 152);
        i2n.put("IFEQ", 153);
        i2n.put("IFNE", 154);
        i2n.put("IFLT", 155);
        i2n.put("IFGE", 156);
        i2n.put("IFGT", 157);
        i2n.put("IFLE", 158);
        i2n.put("IF_ICMPEQ", 159);
        i2n.put("IF_ICMPNE", 160);
        i2n.put("IF_ICMPLT", 161);
        i2n.put("IF_ICMPGE", 162);
        i2n.put("IF_ICMPGT", 163);
        i2n.put("IF_ICMPLE", 164);
        i2n.put("IF_ACMPEQ", 165);
        i2n.put("IF_ACMPNE", 166);
        i2n.put("GOTO", 167);
        i2n.put("JSR", 168);
        i2n.put("RET", 169);
        i2n.put("TABLESWITCH", 170);
        i2n.put("LOOKUPSWITCH", 171);
        i2n.put("IRETURN", 172);
        i2n.put("LRETURN", 173);
        i2n.put("FRETURN", 174);
        i2n.put("DRETURN", 175);
        i2n.put("ARETURN", 176);
        i2n.put("RETURN", 177);
        i2n.put("GETSTATIC", 178);
        i2n.put("PUTSTATIC", 179);
        i2n.put("GETFIELD", 180);
        i2n.put("PUTFIELD", 181);
        i2n.put("INVOKEVIRTUAL", 182);
        i2n.put("INVOKESPECIAL", 183);
        i2n.put("INVOKESTATIC", 184);
        i2n.put("INVOKEINTERFACE", 185);
        i2n.put("INVOKEDYNAMIC", 186);
        i2n.put("NEW", 187);
        i2n.put("NEWARRAY", 188);
        i2n.put("ANEWARRAY", 189);
        i2n.put("ARRAYLENGTH", 190);
        i2n.put("ATHROW", 191);
        i2n.put("CHECKCAST", 192);
        i2n.put("INSTANCEOF", 193);
        i2n.put("MONITORENTER", 194);
        i2n.put("MONITOREXIT", 195);
        i2n.put("MULTIANEWARRAY", 197);
        i2n.put("IFNULL", 198);
        i2n.put("IFNONNULL", 199);

        n2i.put(0, "NOP");
        n2i.put(1, "ACONST_NULL");
        n2i.put(2, "ICONST_M1");
        n2i.put(3, "ICONST_0");
        n2i.put(4, "ICONST_1");
        n2i.put(5, "ICONST_2");
        n2i.put(6, "ICONST_3");
        n2i.put(7, "ICONST_4");
        n2i.put(8, "ICONST_5");
        n2i.put(9, "LCONST_0");
        n2i.put(10, "LCONST_1");
        n2i.put(11, "FCONST_0");
        n2i.put(12, "FCONST_1");
        n2i.put(13, "FCONST_2");
        n2i.put(14, "DCONST_0");
        n2i.put(15, "DCONST_1");
        n2i.put(16, "BIPUSH");
        n2i.put(17, "SIPUSH");
        n2i.put(18, "LDC");
        n2i.put(21, "ILOAD");
        n2i.put(22, "LLOAD");
        n2i.put(23, "FLOAD");
        n2i.put(24, "DLOAD");
        n2i.put(25, "ALOAD");
        n2i.put(46, "IALOAD");
        n2i.put(47, "LALOAD");
        n2i.put(48, "FALOAD");
        n2i.put(49, "DALOAD");
        n2i.put(50, "AALOAD");
        n2i.put(51, "BALOAD");
        n2i.put(52, "CALOAD");
        n2i.put(53, "SALOAD");
        n2i.put(54, "ISTORE");
        n2i.put(55, "LSTORE");
        n2i.put(56, "FSTORE");
        n2i.put(57, "DSTORE");
        n2i.put(58, "ASTORE");
        n2i.put(79, "IASTORE");
        n2i.put(80, "LASTORE");
        n2i.put(81, "FASTORE");
        n2i.put(82, "DASTORE");
        n2i.put(83, "AASTORE");
        n2i.put(84, "BASTORE");
        n2i.put(85, "CASTORE");
        n2i.put(86, "SASTORE");
        n2i.put(87, "POP");
        n2i.put(88, "POP2");
        n2i.put(89, "DUP");
        n2i.put(90, "DUP_X1");
        n2i.put(91, "DUP_X2");
        n2i.put(92, "DUP2");
        n2i.put(93, "DUP2_X1");
        n2i.put(94, "DUP2_X2");
        n2i.put(95, "SWAP");
        n2i.put(96, "IADD");
        n2i.put(97, "LADD");
        n2i.put(98, "FADD");
        n2i.put(99, "DADD");
        n2i.put(100, "ISUB");
        n2i.put(101, "LSUB");
        n2i.put(102, "FSUB");
        n2i.put(103, "DSUB");
        n2i.put(104, "IMUL");
        n2i.put(105, "LMUL");
        n2i.put(106, "FMUL");
        n2i.put(107, "DMUL");
        n2i.put(108, "IDIV");
        n2i.put(109, "LDIV");
        n2i.put(110, "FDIV");
        n2i.put(111, "DDIV");
        n2i.put(112, "IREM");
        n2i.put(113, "LREM");
        n2i.put(114, "FREM");
        n2i.put(115, "DREM");
        n2i.put(116, "INEG");
        n2i.put(117, "LNEG");
        n2i.put(118, "FNEG");
        n2i.put(119, "DNEG");
        n2i.put(120, "ISHL");
        n2i.put(121, "LSHL");
        n2i.put(122, "ISHR");
        n2i.put(123, "LSHR");
        n2i.put(124, "IUSHR");
        n2i.put(125, "LUSHR");
        n2i.put(126, "IAND");
        n2i.put(127, "LAND");
        n2i.put(128, "IOR");
        n2i.put(129, "LOR");
        n2i.put(130, "IXOR");
        n2i.put(131, "LXOR");
        n2i.put(132, "IINC");
        n2i.put(133, "I2L");
        n2i.put(134, "I2F");
        n2i.put(135, "I2D");
        n2i.put(136, "L2I");
        n2i.put(137, "L2F");
        n2i.put(138, "L2D");
        n2i.put(139, "F2I");
        n2i.put(140, "F2L");
        n2i.put(141, "F2D");
        n2i.put(142, "D2I");
        n2i.put(143, "D2L");
        n2i.put(144, "D2F");
        n2i.put(145, "I2B");
        n2i.put(146, "I2C");
        n2i.put(147, "I2S");
        n2i.put(148, "LCMP");
        n2i.put(149, "FCMPL");
        n2i.put(150, "FCMPG");
        n2i.put(151, "DCMPL");
        n2i.put(152, "DCMPG");
        n2i.put(153, "IFEQ");
        n2i.put(154, "IFNE");
        n2i.put(155, "IFLT");
        n2i.put(156, "IFGE");
        n2i.put(157, "IFGT");
        n2i.put(158, "IFLE");
        n2i.put(159, "IF_ICMPEQ");
        n2i.put(160, "IF_ICMPNE");
        n2i.put(161, "IF_ICMPLT");
        n2i.put(162, "IF_ICMPGE");
        n2i.put(163, "IF_ICMPGT");
        n2i.put(164, "IF_ICMPLE");
        n2i.put(165, "IF_ACMPEQ");
        n2i.put(166, "IF_ACMPNE");
        n2i.put(167, "GOTO");
        n2i.put(168, "JSR");
        n2i.put(169, "RET");
        n2i.put(170, "TABLESWITCH");
        n2i.put(171, "LOOKUPSWITCH");
        n2i.put(172, "IRETURN");
        n2i.put(173, "LRETURN");
        n2i.put(174, "FRETURN");
        n2i.put(175, "DRETURN");
        n2i.put(176, "ARETURN");
        n2i.put(177, "RETURN");
        n2i.put(178, "GETSTATIC");
        n2i.put(179, "PUTSTATIC");
        n2i.put(180, "GETFIELD");
        n2i.put(181, "PUTFIELD");
        n2i.put(182, "INVOKEVIRTUAL");
        n2i.put(183, "INVOKESPECIAL");
        n2i.put(184, "INVOKESTATIC");
        n2i.put(185, "INVOKEINTERFACE");
        n2i.put(186, "INVOKEDYNAMIC");
        n2i.put(187, "NEW");
        n2i.put(188, "NEWARRAY");
        n2i.put(189, "ANEWARRAY");
        n2i.put(190, "ARRAYLENGTH");
        n2i.put(191, "ATHROW");
        n2i.put(192, "CHECKCAST");
        n2i.put(193, "INSTANCEOF");
        n2i.put(194, "MONITORENTER");
        n2i.put(195, "MONITOREXIT");
        n2i.put(197, "MULTIANEWARRAY");
        n2i.put(198, "IFNULL");
        n2i.put(199, "IFNONNULL");
    }

}
